package com.atguigu.gulimall.search.vo;

import com.atguigu.common.to.es.SkuEsModel;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName SearchResult
 * @Description TODO
 * @Detail 封装所有检索商品结果以及分类、品牌、属性、分页参数等信息,这些信息的抽取可以参照京东网站或其他商场网站
 * @Author MyPC
 * @Date 2020/7/8
 * @Version 1.0
 */
@Data
public class SearchResult {
    //所有商品结果
    private List<SkuEsModel> products;

    /**
     * 分页信息：当前页码、总记录数、页码数
     */
    private Integer pageNum;
    private Long total;
    private Integer totalPages;
    //存储页码数组，方便前端遍历
    private List<Integer> pageNavs;
    //检索出来的结果所涉及的所有品牌信息
    private List<BrandVo> brands;
    //检索结果所涉及的所有分类信息
    private List<CateLogVo> catelogs;
    //检索结果通过聚合分析所包含的所有属性集合
    private List<AttrVo> attrs;
    //检索条件中包含的属性id，用于前端判断是否显示该类检索条件栏
    private List<Long> attrIds =new ArrayList<>();

    //检索属性的面包屑，初始化navs，防止使用时空指针异常
    private List<NavVo> navs=new ArrayList<>();
    @Data
    public static class NavVo{
        private String navName;
        private String navValue;
        private String link;
    }

    /**
     * 品牌Vo，属性名建议跟SkuEsModel保持一致，方便拷贝
     */
    @Data
    public static class BrandVo{
        private Long brandId;
        private String brandName;
        private String brandImg;
    }

    /**
     * 分类Vo，属性名建议跟SkuEsModel保持一致，方便拷贝
     */
    @Data
    public static class CateLogVo{
        private Long catalogId;
        private String catalogName;
    }

    /**
     * 属性Vo，属性名建议跟SkuEsModel保持一致，方便拷贝
     */
    @Data
    public static class AttrVo{
        private Long attrId;
        private String attrName;
        private List<String> attrValue;
    }

}
